<?php
/**
 * Контроллер по умолчанию
 * 
 * Дефолтный тонтроллер
 * @author Anton Zavidov
 * @package myLiveShop
 */

/**
 * Дефолтный тонтроллер
 *
 */
class ControllerService extends Controller{
	/**
	 * Имя контроллера
	 *
	 * @var string
	 */
	protected static $name='service';
	/**
	 * Констуктор
	 *
	 * @param string $className имя контроллера
	 */
	public function __construct($className=null){	
		parent::__construct($className?$className:__CLASS__);
	}
	public static function show(){
		import('core.db.mysql');
		$db=Core::getDB();
		$db->connect();
		$l=$db->getArray('show tables');
		mysql_select_db('information_schema');
		$elements=array();
		foreach ($l as $item) {
			$item=$item['Tables_in_'.Config::_('db_name')];
			$data=$db->getArray('SELECT * FROM `COLUMNS` WHERE `TABLE_SCHEMA`="'.Config::_('db_name').'" AND `TABLE_NAME`="'.$item.'"');
			$info=array(
				'table'=>$item,
				'table_first'=>ucfirst($item),
				'prim'=>array(),
				'fields'=>array()
				);
			foreach ($data as $field) {
				$fi=array();
				if($field['COLUMN_KEY']=='PRI'){
					$info['prim'][]=$field['COLUMN_NAME'];
				}
				if($field['IS_NULLABLE']=='NO'){
					$fi['important']='true';
				}
				if($field['COLUMN_DEFAULT']){
					$fi['auto']='true';
					//$fi['default_value']=$field['COLUMN_DEFAULT'];
				}
				if($lenght=self::getLenght($field['COLUMN_TYPE'])){
					$fi['lenght']=$lenght;
				}
				if(strpos($field['COLUMN_TYPE'],'tinyint')===0){
					if($lenght==1){
						$fi['validate_type']='Validator::VALIDATE_BOOL';
					}
				}elseif(strpos($field['COLUMN_TYPE'],'varchar')===0){
					$fi['type']='Field::TYPE_STRING';
					if($lenght==1){
						$fi['validate_type']='Validator::VALIDATE_HASH';
					}
				}elseif(strpos($field['COLUMN_TYPE'],'text')===0){
					$fi['type']='Field::TYPE_TEXT';
				}elseif(strpos($field['COLUMN_TYPE'],'timestamp')===0){
					$fi['type']='Field::TYPE_DATETIME';
				}
				if(strpos($field['COLUMN_NAME'],'_id')>0){
					$link=explode('_id',$field['COLUMN_NAME']);
					$link=$link[0];
					if($link=='city' || $link=='country')$link='region';
					if($link!=$info['table'] && $link!='model'){
						$fi['join_table']="'".$link."'";
					}
				}
				$info['fields'][$field['COLUMN_NAME']]=$fi;
			}
			$elements[$item]=$info;
		}
		self::$view->set('elements',$elements);
		self::$view->show('generate_model.tpl');
	}
	private static function getLenght($value){
		$value=explode('(',$value);
		if(!isset($value[1]))return false;
		$value=explode(')',$value[1]);
		if(strpos($value[0],',')>0){
			$value=explode(',',$value[0]);
		}
		return $value[0];
	}
}